package org.swan.web.namespace.controller;

import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.*;
import org.stream.base.MessageBean;
import org.swan.web.namespace.bean.NamespaceBean;
import org.swan.web.namespace.service.NamespaceService;
import java.util.List;

@RestController
@RequestMapping("/namespace")
public class NamespaceController {

    private final NamespaceService namespaceService;

    public NamespaceController(NamespaceService namespaceService) {
        this.namespaceService = namespaceService;
    }

    @GetMapping("/get")
    public MessageBean<NamespaceBean> get(@RequestParam("namespaceId") long namespaceId) {
        return MessageBean.MSG_SUCCESS.setData(namespaceService.getNamespaceById(namespaceId));
    }

    @PostMapping("add")
    public MessageBean<NamespaceBean> add(@RequestBody NamespaceBean namespaceBean) {
        long namespaceId = namespaceService.addNamespace(namespaceBean);
        return MessageBean.MSG_SUCCESS.setData(namespaceService.getNamespaceById(namespaceBean.getNamespaceId()));
    }

    @PostMapping("update")
    public MessageBean<NamespaceBean> update(@RequestBody NamespaceBean namespaceBean) {
        return MessageBean.MSG_SUCCESS.setData(namespaceService.updateNamespace(namespaceBean));
    }

    @GetMapping("delete")
    public MessageBean<NamespaceBean> delete(@RequestParam("namespaceId") long namespaceId) {
        return MessageBean.MSG_SUCCESS.setData(namespaceService.deleteNamespaceById(namespaceId));
    }

    @GetMapping("list")
    public MessageBean<List<NamespaceBean>> list(@Param("offset") int offset, @Param("rows") int rows) {
        return MessageBean.MSG_SUCCESS.setData(namespaceService.list(offset, rows));
    }
}
